package com.atguigu.state;

import java.util.Random;

/**
 * @program: design-patterns
 * @author: yangshen
 * @description: 可以抽奖的状态
 * @create: 2022-03-30 11:21
 **/
public class CanRaffleState extends State{

    RaffleActivity activity;

    public CanRaffleState(RaffleActivity activity) {
        this.activity = activity;
    }

    /**
     * 已经扣除了积分，不能再扣
     */
    @Override
    public void deductMoney() {
        System.out.println("已经扣取过积分了");
    }


    /**
     * 可以抽奖，抽完奖后，根据实际情况，改成新的状态（中奖：发放奖品；未中奖：不能抽奖）
     * @return
     */
    @Override
    public boolean raffle() {
        System.out.println("正在抽奖，请稍等");
        int i = new Random().nextInt(10);
        //10%中奖机会
        if(i == 0){
            //中将了，将活动状态改为发放奖品
            activity.setState(activity.getDispenseState());
            return true;
        }else {
            System.out.println("很遗憾没有抽中奖品！");
            //改状态为不能抽取奖品
            activity.setState(activity.getNoRaffleState());
            return false;
        }
    }

    /**
     * 当前状态不能发放奖品
     */
    @Override
    public void dispensePrize() {
        System.out.println("没中奖，不能发放奖品");
    }
}
